/*
 * StPatsView.java
 */

package GUI;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;

/**
 * The application's main frame.
 */
public class StPatsView extends FrameView {

    public StPatsView(SingleFrameApplication app) {
        super(app);

        initComponents();

        // status bar initialization - message timeout, idle icon and busy animation, etc
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
        messageTimer = new Timer(messageTimeout, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statusMessageLabel.setText("");
            }
        });
        messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++) {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        });
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName)) {
                    if (!busyIconTimer.isRunning()) {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                } else if ("done".equals(propertyName)) {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                } else if ("message".equals(propertyName)) {
                    String text = (String)(evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                } else if ("progress".equals(propertyName)) {
                    int value = (Integer)(evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });
    }

    @Action
    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = StPatsApp.getApplication().getMainFrame();
            aboutBox = new StPatsAboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        StPatsApp.getApplication().show(aboutBox);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        tpFamily = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        lblLastName = new javax.swing.JLabel();
        lblFirstNames = new javax.swing.JLabel();
        lblSalutation = new javax.swing.JLabel();
        txtFirstNames = new javax.swing.JTextField();
        txtLastName = new javax.swing.JTextField();
        txtSalutation = new javax.swing.JTextField();
        lblAddr = new javax.swing.JLabel();
        tpAddresses = new javax.swing.JTabbedPane();
        pnHome = new javax.swing.JPanel();
        txtHomeAddr1 = new javax.swing.JTextField();
        txtHomeAddr2 = new javax.swing.JTextField();
        txtHomeCity = new javax.swing.JTextField();
        txtHomeState = new javax.swing.JTextField();
        lblHomeZip = new javax.swing.JLabel();
        txtHomeZip = new javax.swing.JTextField();
        txtHomePhone = new javax.swing.JTextField();
        pnMailing = new javax.swing.JPanel();
        txtMailingAddr1 = new javax.swing.JTextField();
        txtMailingAddr2 = new javax.swing.JTextField();
        txtMailingCity = new javax.swing.JTextField();
        txtMailingState = new javax.swing.JTextField();
        lblMailingZip = new javax.swing.JLabel();
        txtMailingZip = new javax.swing.JTextField();
        txtMailingPhone = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        txtOtherAddr1 = new javax.swing.JTextField();
        txtOtherAddr2 = new javax.swing.JTextField();
        txtOtherCity = new javax.swing.JTextField();
        txtOtherState = new javax.swing.JTextField();
        txtOtherPhone = new javax.swing.JTextField();
        lblCity = new javax.swing.JLabel();
        lblState = new javax.swing.JLabel();
        lblPhone = new javax.swing.JLabel();
        lblLastNameSearch = new javax.swing.JLabel();
        cbLastNameSearch = new javax.swing.JComboBox();
        lblFamilyID = new javax.swing.JLabel();
        txtFamilyID = new javax.swing.JTextField();
        lblFamilyPledgeYear = new javax.swing.JLabel();
        lblFamilyPledgeAmount = new javax.swing.JLabel();
        lblGivenThisWeek = new javax.swing.JLabel();
        txtFamilyPledgeYear = new javax.swing.JTextField();
        txtFamilyPledgeAmount = new javax.swing.JTextField();
        txtGivenThisWeek = new javax.swing.JTextField();
        btnUpdate = new javax.swing.JButton();
        btnExit = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextPane1 = new javax.swing.JTextPane();
        lblNotes = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        lblFamilyNameAndID = new javax.swing.JLabel();
        lblMemberFirstName = new javax.swing.JLabel();
        txtMemberFirstName = new javax.swing.JTextField();
        lblMemberLastName = new javax.swing.JLabel();
        txtMemberLastName = new javax.swing.JTextField();
        lblMemberGender = new javax.swing.JLabel();
        cbMemberGender = new javax.swing.JComboBox();
        lblMemberGoesBy = new javax.swing.JLabel();
        txtMemberGoesBy = new javax.swing.JTextField();
        lblMemberID = new javax.swing.JLabel();
        txtMemberID = new javax.swing.JTextField();
        lblMemberDOB = new javax.swing.JLabel();
        txtMemberDOB = new javax.swing.JTextField();
        lblMemberSchool = new javax.swing.JLabel();
        cbMemberSchool = new javax.swing.JComboBox();
        lblMemberOccupation = new javax.swing.JLabel();
        txtMemberOccupation = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        txtMemberEmployer = new javax.swing.JTextField();
        lblMemberHomePhone = new javax.swing.JLabel();
        lblMemberWorkPhone = new javax.swing.JLabel();
        txtMemberHomePhone = new javax.swing.JTextField();
        txtMemberWorkPhone = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        txtMemberEmail = new javax.swing.JTextField();
        lblMemberOtherEmail = new javax.swing.JLabel();
        txtMemberOtherEmail = new javax.swing.JTextField();
        lblMemberFamilyRole = new javax.swing.JLabel();
        cbMemberFamilyRole = new javax.swing.JComboBox();
        btnMemberAdd = new javax.swing.JButton();
        btnMemberUpdate = new javax.swing.JButton();
        btnMemberExit = new javax.swing.JButton();
        lblMemberMinistry = new javax.swing.JLabel();
        txtMemberMinistry1 = new javax.swing.JTextField();
        txtMemberMinistry2 = new javax.swing.JTextField();
        txtMemberMinistry3 = new javax.swing.JTextField();
        lblMemberInterests = new javax.swing.JLabel();
        txtMemberInterest1 = new javax.swing.JTextField();
        txtMemberInterest2 = new javax.swing.JTextField();
        txtMemberInterest = new javax.swing.JTextField();
        menuBar = new javax.swing.JMenuBar();
        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
        javax.swing.JMenu helpMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
        statusPanel = new javax.swing.JPanel();
        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
        statusMessageLabel = new javax.swing.JLabel();
        statusAnimationLabel = new javax.swing.JLabel();
        progressBar = new javax.swing.JProgressBar();

        mainPanel.setName("mainPanel"); // NOI18N
        mainPanel.setPreferredSize(new java.awt.Dimension(800, 600));

        tpFamily.setName("tpFamily"); // NOI18N

        jPanel1.setName("jPanel1"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(GUI.StPatsApp.class).getContext().getResourceMap(StPatsView.class);
        lblLastName.setText(resourceMap.getString("lblLastName.text")); // NOI18N
        lblLastName.setName("lblLastName"); // NOI18N

        lblFirstNames.setText(resourceMap.getString("lblFirstNames.text")); // NOI18N
        lblFirstNames.setName("lblFirstNames"); // NOI18N

        lblSalutation.setText(resourceMap.getString("lblSalutation.text")); // NOI18N
        lblSalutation.setName("lblSalutation"); // NOI18N

        txtFirstNames.setText(resourceMap.getString("txtFirstNames.text")); // NOI18N
        txtFirstNames.setName("txtFirstNames"); // NOI18N

        txtLastName.setText(resourceMap.getString("txtLastName.text")); // NOI18N
        txtLastName.setName("txtLastName"); // NOI18N

        txtSalutation.setText(resourceMap.getString("txtSalutation.text")); // NOI18N
        txtSalutation.setName("txtSalutation"); // NOI18N

        lblAddr.setText(resourceMap.getString("lblAddr.text")); // NOI18N
        lblAddr.setName("lblAddr"); // NOI18N

        tpAddresses.setName("tpAddresses"); // NOI18N

        pnHome.setName("pnHome"); // NOI18N

        txtHomeAddr1.setText(resourceMap.getString("txtHomeAddr1.text")); // NOI18N
        txtHomeAddr1.setName("txtHomeAddr1"); // NOI18N

        txtHomeAddr2.setText(resourceMap.getString("txtHomeAddr2.text")); // NOI18N
        txtHomeAddr2.setName("txtHomeAddr2"); // NOI18N

        txtHomeCity.setText(resourceMap.getString("txtHomeCity.text")); // NOI18N
        txtHomeCity.setName("txtHomeCity"); // NOI18N

        txtHomeState.setText(resourceMap.getString("txtHomeState.text")); // NOI18N
        txtHomeState.setName("txtHomeState"); // NOI18N

        lblHomeZip.setText(resourceMap.getString("lblHomeZip.text")); // NOI18N
        lblHomeZip.setName("lblHomeZip"); // NOI18N

        txtHomeZip.setText(resourceMap.getString("txtHomeZip.text")); // NOI18N
        txtHomeZip.setName("txtHomeZip"); // NOI18N

        txtHomePhone.setText(resourceMap.getString("txtHomePhone.text")); // NOI18N
        txtHomePhone.setName("txtHomePhone"); // NOI18N

        javax.swing.GroupLayout pnHomeLayout = new javax.swing.GroupLayout(pnHome);
        pnHome.setLayout(pnHomeLayout);
        pnHomeLayout.setHorizontalGroup(
            pnHomeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnHomeLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnHomeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtHomeAddr1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtHomeAddr2, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtHomeCity, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addGroup(pnHomeLayout.createSequentialGroup()
                        .addComponent(txtHomeState, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lblHomeZip)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtHomeZip, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE))
                    .addComponent(txtHomePhone, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        pnHomeLayout.setVerticalGroup(
            pnHomeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnHomeLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(txtHomeAddr1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtHomeAddr2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtHomeCity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnHomeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtHomeState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtHomeZip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblHomeZip))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtHomePhone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        tpAddresses.addTab(resourceMap.getString("pnHome.TabConstraints.tabTitle"), pnHome); // NOI18N

        pnMailing.setName("pnMailing"); // NOI18N

        txtMailingAddr1.setText(resourceMap.getString("txtMailingAddr1.text")); // NOI18N
        txtMailingAddr1.setName("txtMailingAddr1"); // NOI18N

        txtMailingAddr2.setText(resourceMap.getString("txtMailingAddr2.text")); // NOI18N
        txtMailingAddr2.setName("txtMailingAddr2"); // NOI18N

        txtMailingCity.setText(resourceMap.getString("txtMailingCity.text")); // NOI18N
        txtMailingCity.setName("txtMailingCity"); // NOI18N

        txtMailingState.setText(resourceMap.getString("txtMailingState.text")); // NOI18N
        txtMailingState.setName("txtMailingState"); // NOI18N

        lblMailingZip.setText(resourceMap.getString("lblMailingZip.text")); // NOI18N
        lblMailingZip.setName("lblMailingZip"); // NOI18N

        txtMailingZip.setText(resourceMap.getString("txtMailingZip.text")); // NOI18N
        txtMailingZip.setName("txtMailingZip"); // NOI18N

        txtMailingPhone.setText(resourceMap.getString("txtMailingPhone.text")); // NOI18N
        txtMailingPhone.setName("txtMailingPhone"); // NOI18N

        javax.swing.GroupLayout pnMailingLayout = new javax.swing.GroupLayout(pnMailing);
        pnMailing.setLayout(pnMailingLayout);
        pnMailingLayout.setHorizontalGroup(
            pnMailingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnMailingLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnMailingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtMailingAddr2, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtMailingAddr1, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtMailingCity, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addGroup(pnMailingLayout.createSequentialGroup()
                        .addComponent(txtMailingState, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lblMailingZip)
                        .addGap(18, 18, 18)
                        .addComponent(txtMailingZip, javax.swing.GroupLayout.DEFAULT_SIZE, 65, Short.MAX_VALUE))
                    .addComponent(txtMailingPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );
        pnMailingLayout.setVerticalGroup(
            pnMailingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnMailingLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(txtMailingAddr1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtMailingAddr2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtMailingCity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnMailingLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtMailingState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblMailingZip)
                    .addComponent(txtMailingZip, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtMailingPhone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        tpAddresses.addTab(resourceMap.getString("pnMailing.TabConstraints.tabTitle"), pnMailing); // NOI18N

        jPanel3.setName("jPanel3"); // NOI18N

        txtOtherAddr1.setText(resourceMap.getString("txtOtherAddr1.text")); // NOI18N
        txtOtherAddr1.setName("txtOtherAddr1"); // NOI18N

        txtOtherAddr2.setText(resourceMap.getString("txtOtherAddr2.text")); // NOI18N
        txtOtherAddr2.setName("txtOtherAddr2"); // NOI18N

        txtOtherCity.setText(resourceMap.getString("txtOtherCity.text")); // NOI18N
        txtOtherCity.setName("txtOtherCity"); // NOI18N

        txtOtherState.setText(resourceMap.getString("txtOtherState.text")); // NOI18N
        txtOtherState.setName("txtOtherState"); // NOI18N

        txtOtherPhone.setText(resourceMap.getString("txtOtherPhone.text")); // NOI18N
        txtOtherPhone.setName("txtOtherPhone"); // NOI18N

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtOtherAddr2, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtOtherAddr1, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtOtherCity, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtOtherState, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
                    .addComponent(txtOtherPhone, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(txtOtherAddr1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtOtherAddr2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtOtherCity, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtOtherState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtOtherPhone, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        tpAddresses.addTab(resourceMap.getString("jPanel3.TabConstraints.tabTitle"), jPanel3); // NOI18N

        lblCity.setText(resourceMap.getString("lblCity.text")); // NOI18N
        lblCity.setName("lblCity"); // NOI18N

        lblState.setText(resourceMap.getString("lblState.text")); // NOI18N
        lblState.setName("lblState"); // NOI18N

        lblPhone.setText(resourceMap.getString("lblPhone.text")); // NOI18N
        lblPhone.setName("lblPhone"); // NOI18N

        lblLastNameSearch.setText(resourceMap.getString("lblLastNameSearch.text")); // NOI18N
        lblLastNameSearch.setName("lblLastNameSearch"); // NOI18N

        cbLastNameSearch.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbLastNameSearch.setName("cbLastNameSearch"); // NOI18N

        lblFamilyID.setText(resourceMap.getString("lblFamilyID.text")); // NOI18N
        lblFamilyID.setName("lblFamilyID"); // NOI18N

        txtFamilyID.setText(resourceMap.getString("txtFamilyID.text")); // NOI18N
        txtFamilyID.setName("txtFamilyID"); // NOI18N

        lblFamilyPledgeYear.setText(resourceMap.getString("lblFamilyPledgeYear.text")); // NOI18N
        lblFamilyPledgeYear.setName("lblFamilyPledgeYear"); // NOI18N

        lblFamilyPledgeAmount.setText(resourceMap.getString("lblFamilyPledgeAmount.text")); // NOI18N
        lblFamilyPledgeAmount.setName("lblFamilyPledgeAmount"); // NOI18N

        lblGivenThisWeek.setText(resourceMap.getString("lblGivenThisWeek.text")); // NOI18N
        lblGivenThisWeek.setName("lblGivenThisWeek"); // NOI18N

        txtFamilyPledgeYear.setText(resourceMap.getString("txtFamilyPledgeYear.text")); // NOI18N
        txtFamilyPledgeYear.setName("txtFamilyPledgeYear"); // NOI18N

        txtFamilyPledgeAmount.setText(resourceMap.getString("txtFamilyPledgeAmount.text")); // NOI18N
        txtFamilyPledgeAmount.setName("txtFamilyPledgeAmount"); // NOI18N

        txtGivenThisWeek.setText(resourceMap.getString("txtGivenThisWeek.text")); // NOI18N
        txtGivenThisWeek.setName("txtGivenThisWeek"); // NOI18N

        btnUpdate.setText(resourceMap.getString("btnUpdate.text")); // NOI18N
        btnUpdate.setName("btnUpdate"); // NOI18N

        btnExit.setText(resourceMap.getString("btnExit.text")); // NOI18N
        btnExit.setName("btnExit"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTextPane1.setName("jTextPane1"); // NOI18N
        jScrollPane1.setViewportView(jTextPane1);

        lblNotes.setText(resourceMap.getString("lblNotes.text")); // NOI18N
        lblNotes.setName("lblNotes"); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblState)
                            .addComponent(lblCity)
                            .addComponent(lblAddr)
                            .addComponent(lblPhone))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(tpAddresses, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblLastName)
                            .addComponent(lblFirstNames)
                            .addComponent(lblSalutation))
                        .addGap(14, 14, 14)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txtLastName, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
                            .addComponent(txtFirstNames, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
                            .addComponent(txtSalutation, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE))))
                .addGap(28, 28, 28)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                .addComponent(lblNotes)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 329, Short.MAX_VALUE))
                            .addComponent(lblGivenThisWeek, javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                .addComponent(lblFamilyPledgeAmount)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txtFamilyPledgeAmount, javax.swing.GroupLayout.DEFAULT_SIZE, 227, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(lblLastNameSearch)
                                    .addComponent(lblFamilyID)
                                    .addComponent(lblFamilyPledgeYear))
                                .addGap(10, 10, 10)
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(cbLastNameSearch, 0, 113, Short.MAX_VALUE)
                                    .addComponent(txtFamilyID, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addGap(18, 18, 18)
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(txtGivenThisWeek, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
                                            .addComponent(txtFamilyPledgeYear, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE))))))
                        .addContainerGap())
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(btnUpdate)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 201, Short.MAX_VALUE)
                        .addComponent(btnExit, javax.swing.GroupLayout.PREFERRED_SIZE, 73, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(31, 31, 31))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblLastName)
                    .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblLastNameSearch)
                    .addComponent(cbLastNameSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtFirstNames, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblFirstNames))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtSalutation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblSalutation))
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(63, 63, 63)
                                .addComponent(lblAddr)
                                .addGap(39, 39, 39)
                                .addComponent(lblCity)
                                .addGap(18, 18, 18)
                                .addComponent(lblState)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(lblPhone))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(21, 21, 21)
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(lblFamilyPledgeYear)
                                            .addComponent(txtFamilyPledgeYear, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(lblFamilyPledgeAmount)
                                            .addComponent(txtFamilyPledgeAmount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                            .addComponent(lblGivenThisWeek)
                                            .addComponent(txtGivenThisWeek, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(27, 27, 27)
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(lblNotes)
                                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(23, 23, 23)
                                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(btnUpdate)
                                            .addComponent(btnExit)))
                                    .addComponent(tpAddresses, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(20, 20, 20)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblFamilyID)
                            .addComponent(txtFamilyID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addGap(14, 14, 14))
        );

        tpFamily.addTab(resourceMap.getString("jPanel1.TabConstraints.tabTitle"), jPanel1); // NOI18N

        jPanel2.setName("jPanel2"); // NOI18N
        jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblFamilyNameAndID.setText(resourceMap.getString("lblFamilyNameAndID.text")); // NOI18N
        lblFamilyNameAndID.setName("lblFamilyNameAndID"); // NOI18N
        jPanel2.add(lblFamilyNameAndID, new org.netbeans.lib.awtextra.AbsoluteConstraints(88, 13, 264, -1));

        lblMemberFirstName.setText(resourceMap.getString("lblMemberFirstName.text")); // NOI18N
        lblMemberFirstName.setName("lblMemberFirstName"); // NOI18N
        jPanel2.add(lblMemberFirstName, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 56, -1, -1));

        txtMemberFirstName.setText(resourceMap.getString("txtMemberFirstName.text")); // NOI18N
        txtMemberFirstName.setName("txtMemberFirstName"); // NOI18N
        jPanel2.add(txtMemberFirstName, new org.netbeans.lib.awtextra.AbsoluteConstraints(79, 53, 91, -1));

        lblMemberLastName.setText(resourceMap.getString("lblMemberLastName.text")); // NOI18N
        lblMemberLastName.setName("lblMemberLastName"); // NOI18N
        jPanel2.add(lblMemberLastName, new org.netbeans.lib.awtextra.AbsoluteConstraints(196, 56, -1, -1));

        txtMemberLastName.setText(resourceMap.getString("txtMemberLastName.text")); // NOI18N
        txtMemberLastName.setName("txtMemberLastName"); // NOI18N
        jPanel2.add(txtMemberLastName, new org.netbeans.lib.awtextra.AbsoluteConstraints(268, 53, 118, -1));

        lblMemberGender.setText(resourceMap.getString("lblMemberGender.text")); // NOI18N
        lblMemberGender.setName("lblMemberGender"); // NOI18N
        jPanel2.add(lblMemberGender, new org.netbeans.lib.awtextra.AbsoluteConstraints(404, 56, -1, -1));

        cbMemberGender.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbMemberGender.setName("cbMemberGender"); // NOI18N
        jPanel2.add(cbMemberGender, new org.netbeans.lib.awtextra.AbsoluteConstraints(478, 53, -1, -1));

        lblMemberGoesBy.setText(resourceMap.getString("lblMemberGoesBy.text")); // NOI18N
        lblMemberGoesBy.setName("lblMemberGoesBy"); // NOI18N
        jPanel2.add(lblMemberGoesBy, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 91, -1, -1));

        txtMemberGoesBy.setText(resourceMap.getString("txtMemberGoesBy.text")); // NOI18N
        txtMemberGoesBy.setName("txtMemberGoesBy"); // NOI18N
        jPanel2.add(txtMemberGoesBy, new org.netbeans.lib.awtextra.AbsoluteConstraints(79, 88, 91, -1));

        lblMemberID.setText(resourceMap.getString("lblMemberID.text")); // NOI18N
        lblMemberID.setName("lblMemberID"); // NOI18N
        jPanel2.add(lblMemberID, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 16, -1, -1));

        txtMemberID.setText(resourceMap.getString("txtMemberID.text")); // NOI18N
        txtMemberID.setName("txtMemberID"); // NOI18N
        txtMemberID.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txtMemberIDKeyPressed(evt);
            }
        });
        jPanel2.add(txtMemberID, new org.netbeans.lib.awtextra.AbsoluteConstraints(459, 13, 46, -1));

        lblMemberDOB.setText(resourceMap.getString("lblMemberDOB.text")); // NOI18N
        lblMemberDOB.setName("lblMemberDOB"); // NOI18N
        jPanel2.add(lblMemberDOB, new org.netbeans.lib.awtextra.AbsoluteConstraints(196, 91, -1, -1));

        txtMemberDOB.setText(resourceMap.getString("txtMemberDOB.text")); // NOI18N
        txtMemberDOB.setName("txtMemberDOB"); // NOI18N
        jPanel2.add(txtMemberDOB, new org.netbeans.lib.awtextra.AbsoluteConstraints(274, 88, 112, -1));

        lblMemberSchool.setText(resourceMap.getString("lblMemberSchool.text")); // NOI18N
        lblMemberSchool.setName("lblMemberSchool"); // NOI18N
        jPanel2.add(lblMemberSchool, new org.netbeans.lib.awtextra.AbsoluteConstraints(404, 91, -1, -1));

        cbMemberSchool.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbMemberSchool.setName("cbMemberSchool"); // NOI18N
        jPanel2.add(cbMemberSchool, new org.netbeans.lib.awtextra.AbsoluteConstraints(478, 128, -1, -1));

        lblMemberOccupation.setText(resourceMap.getString("lblMemberOccupation.text")); // NOI18N
        lblMemberOccupation.setName("lblMemberOccupation"); // NOI18N
        jPanel2.add(lblMemberOccupation, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 131, -1, -1));

        txtMemberOccupation.setText(resourceMap.getString("txtMemberOccupation.text")); // NOI18N
        txtMemberOccupation.setName("txtMemberOccupation"); // NOI18N
        jPanel2.add(txtMemberOccupation, new org.netbeans.lib.awtextra.AbsoluteConstraints(87, 128, 103, -1));

        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N
        jPanel2.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(208, 131, -1, -1));

        txtMemberEmployer.setText(resourceMap.getString("txtMemberEmployer.text")); // NOI18N
        txtMemberEmployer.setName("txtMemberEmployer"); // NOI18N
        jPanel2.add(txtMemberEmployer, new org.netbeans.lib.awtextra.AbsoluteConstraints(289, 128, 97, -1));

        lblMemberHomePhone.setText(resourceMap.getString("lblMemberHomePhone.text")); // NOI18N
        lblMemberHomePhone.setName("lblMemberHomePhone"); // NOI18N
        jPanel2.add(lblMemberHomePhone, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 173, -1, -1));

        lblMemberWorkPhone.setText(resourceMap.getString("lblMemberWorkPhone.text")); // NOI18N
        lblMemberWorkPhone.setName("lblMemberWorkPhone"); // NOI18N
        jPanel2.add(lblMemberWorkPhone, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 173, -1, -1));

        txtMemberHomePhone.setText(resourceMap.getString("txtMemberHomePhone.text")); // NOI18N
        txtMemberHomePhone.setName("txtMemberHomePhone"); // NOI18N
        jPanel2.add(txtMemberHomePhone, new org.netbeans.lib.awtextra.AbsoluteConstraints(89, 170, 133, -1));

        txtMemberWorkPhone.setText(resourceMap.getString("txtMemberWorkPhone.text")); // NOI18N
        txtMemberWorkPhone.setName("txtMemberWorkPhone"); // NOI18N
        jPanel2.add(txtMemberWorkPhone, new org.netbeans.lib.awtextra.AbsoluteConstraints(321, 170, 102, -1));

        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N
        jPanel2.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 216, -1, -1));

        txtMemberEmail.setText(resourceMap.getString("txtMemberEmail.text")); // NOI18N
        txtMemberEmail.setName("txtMemberEmail"); // NOI18N
        jPanel2.add(txtMemberEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(89, 213, 133, -1));

        lblMemberOtherEmail.setText(resourceMap.getString("lblMemberOtherEmail.text")); // NOI18N
        lblMemberOtherEmail.setName("lblMemberOtherEmail"); // NOI18N
        jPanel2.add(lblMemberOtherEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 216, -1, -1));

        txtMemberOtherEmail.setText(resourceMap.getString("txtMemberOtherEmail.text")); // NOI18N
        txtMemberOtherEmail.setName("txtMemberOtherEmail"); // NOI18N
        jPanel2.add(txtMemberOtherEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(319, 213, 143, -1));

        lblMemberFamilyRole.setText(resourceMap.getString("lblMemberFamilyRole.text")); // NOI18N
        lblMemberFamilyRole.setName("lblMemberFamilyRole"); // NOI18N
        jPanel2.add(lblMemberFamilyRole, new org.netbeans.lib.awtextra.AbsoluteConstraints(404, 131, -1, -1));

        cbMemberFamilyRole.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cbMemberFamilyRole.setName("cbMemberFamilyRole"); // NOI18N
        jPanel2.add(cbMemberFamilyRole, new org.netbeans.lib.awtextra.AbsoluteConstraints(478, 88, -1, -1));

        btnMemberAdd.setText(resourceMap.getString("btnMemberAdd.text")); // NOI18N
        btnMemberAdd.setName("btnMemberAdd"); // NOI18N
        jPanel2.add(btnMemberAdd, new org.netbeans.lib.awtextra.AbsoluteConstraints(56, 343, 69, -1));

        btnMemberUpdate.setText(resourceMap.getString("btnMemberUpdate.text")); // NOI18N
        btnMemberUpdate.setName("btnMemberUpdate"); // NOI18N
        jPanel2.add(btnMemberUpdate, new org.netbeans.lib.awtextra.AbsoluteConstraints(196, 343, -1, -1));

        btnMemberExit.setText(resourceMap.getString("btnMemberExit.text")); // NOI18N
        btnMemberExit.setName("btnMemberExit"); // NOI18N
        jPanel2.add(btnMemberExit, new org.netbeans.lib.awtextra.AbsoluteConstraints(366, 343, 67, -1));

        lblMemberMinistry.setText(resourceMap.getString("lblMemberMinistry.text")); // NOI18N
        lblMemberMinistry.setName("lblMemberMinistry"); // NOI18N
        jPanel2.add(lblMemberMinistry, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 256, -1, -1));

        txtMemberMinistry1.setText(resourceMap.getString("txtMemberMinistry1.text")); // NOI18N
        txtMemberMinistry1.setName("txtMemberMinistry1"); // NOI18N
        jPanel2.add(txtMemberMinistry1, new org.netbeans.lib.awtextra.AbsoluteConstraints(132, 253, 83, -1));

        txtMemberMinistry2.setText(resourceMap.getString("txtMemberMinistry2.text")); // NOI18N
        txtMemberMinistry2.setName("txtMemberMinistry2"); // NOI18N
        jPanel2.add(txtMemberMinistry2, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 253, 86, -1));

        txtMemberMinistry3.setText(resourceMap.getString("txtMemberMinistry3.text")); // NOI18N
        txtMemberMinistry3.setName("txtMemberMinistry3"); // NOI18N
        jPanel2.add(txtMemberMinistry3, new org.netbeans.lib.awtextra.AbsoluteConstraints(357, 253, 105, -1));

        lblMemberInterests.setText(resourceMap.getString("lblMemberInterests.text")); // NOI18N
        lblMemberInterests.setName("lblMemberInterests"); // NOI18N
        jPanel2.add(lblMemberInterests, new org.netbeans.lib.awtextra.AbsoluteConstraints(12, 296, -1, -1));

        txtMemberInterest1.setText(resourceMap.getString("txtMemberInterest1.text")); // NOI18N
        txtMemberInterest1.setName("txtMemberInterest1"); // NOI18N
        jPanel2.add(txtMemberInterest1, new org.netbeans.lib.awtextra.AbsoluteConstraints(128, 293, 87, -1));

        txtMemberInterest2.setText(resourceMap.getString("txtMemberInterest2.text")); // NOI18N
        txtMemberInterest2.setName("txtMemberInterest2"); // NOI18N
        jPanel2.add(txtMemberInterest2, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 293, 86, -1));

        txtMemberInterest.setText(resourceMap.getString("txtMemberInterest.text")); // NOI18N
        txtMemberInterest.setName("txtMemberInterest"); // NOI18N
        jPanel2.add(txtMemberInterest, new org.netbeans.lib.awtextra.AbsoluteConstraints(357, 293, 105, -1));

        tpFamily.addTab(resourceMap.getString("jPanel2.TabConstraints.tabTitle"), jPanel2); // NOI18N

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(tpFamily, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE)
                .addContainerGap())
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(tpFamily, javax.swing.GroupLayout.DEFAULT_SIZE, 525, Short.MAX_VALUE)
                .addContainerGap())
        );

        menuBar.setName("menuBar"); // NOI18N

        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
        fileMenu.setName("fileMenu"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(GUI.StPatsApp.class).getContext().getActionMap(StPatsView.class, this);
        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
        exitMenuItem.setName("exitMenuItem"); // NOI18N
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N
        helpMenu.setName("helpMenu"); // NOI18N

        aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
        aboutMenuItem.setName("aboutMenuItem"); // NOI18N
        helpMenu.add(aboutMenuItem);

        menuBar.add(helpMenu);

        statusPanel.setName("statusPanel"); // NOI18N

        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

        statusMessageLabel.setName("statusMessageLabel"); // NOI18N

        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

        progressBar.setName("progressBar"); // NOI18N

        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
        statusPanel.setLayout(statusPanelLayout);
        statusPanelLayout.setHorizontalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 800, Short.MAX_VALUE)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(statusMessageLabel)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 776, Short.MAX_VALUE)
                .addComponent(statusAnimationLabel)
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, statusPanelLayout.createSequentialGroup()
                .addContainerGap(642, Short.MAX_VALUE)
                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        statusPanelLayout.setVerticalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(statusPanelLayout.createSequentialGroup()
                        .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(statusMessageLabel)
                            .addComponent(statusAnimationLabel))
                        .addGap(3, 3, 3))
                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );

        setComponent(mainPanel);
        setMenuBar(menuBar);
        setStatusBar(statusPanel);
    }// </editor-fold>//GEN-END:initComponents

    private void txtMemberIDKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtMemberIDKeyPressed

        //



    }//GEN-LAST:event_txtMemberIDKeyPressed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnExit;
    private javax.swing.JButton btnMemberAdd;
    private javax.swing.JButton btnMemberExit;
    private javax.swing.JButton btnMemberUpdate;
    private javax.swing.JButton btnUpdate;
    private javax.swing.JComboBox cbLastNameSearch;
    private javax.swing.JComboBox cbMemberFamilyRole;
    private javax.swing.JComboBox cbMemberGender;
    private javax.swing.JComboBox cbMemberSchool;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextPane jTextPane1;
    private javax.swing.JLabel lblAddr;
    private javax.swing.JLabel lblCity;
    private javax.swing.JLabel lblFamilyID;
    private javax.swing.JLabel lblFamilyNameAndID;
    private javax.swing.JLabel lblFamilyPledgeAmount;
    private javax.swing.JLabel lblFamilyPledgeYear;
    private javax.swing.JLabel lblFirstNames;
    private javax.swing.JLabel lblGivenThisWeek;
    private javax.swing.JLabel lblHomeZip;
    private javax.swing.JLabel lblLastName;
    private javax.swing.JLabel lblLastNameSearch;
    private javax.swing.JLabel lblMailingZip;
    private javax.swing.JLabel lblMemberDOB;
    private javax.swing.JLabel lblMemberFamilyRole;
    private javax.swing.JLabel lblMemberFirstName;
    private javax.swing.JLabel lblMemberGender;
    private javax.swing.JLabel lblMemberGoesBy;
    private javax.swing.JLabel lblMemberHomePhone;
    private javax.swing.JLabel lblMemberID;
    private javax.swing.JLabel lblMemberInterests;
    private javax.swing.JLabel lblMemberLastName;
    private javax.swing.JLabel lblMemberMinistry;
    private javax.swing.JLabel lblMemberOccupation;
    private javax.swing.JLabel lblMemberOtherEmail;
    private javax.swing.JLabel lblMemberSchool;
    private javax.swing.JLabel lblMemberWorkPhone;
    private javax.swing.JLabel lblNotes;
    private javax.swing.JLabel lblPhone;
    private javax.swing.JLabel lblSalutation;
    private javax.swing.JLabel lblState;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JPanel pnHome;
    private javax.swing.JPanel pnMailing;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JLabel statusAnimationLabel;
    private javax.swing.JLabel statusMessageLabel;
    private javax.swing.JPanel statusPanel;
    private javax.swing.JTabbedPane tpAddresses;
    private javax.swing.JTabbedPane tpFamily;
    private javax.swing.JTextField txtFamilyID;
    private javax.swing.JTextField txtFamilyPledgeAmount;
    private javax.swing.JTextField txtFamilyPledgeYear;
    private javax.swing.JTextField txtFirstNames;
    private javax.swing.JTextField txtGivenThisWeek;
    private javax.swing.JTextField txtHomeAddr1;
    private javax.swing.JTextField txtHomeAddr2;
    private javax.swing.JTextField txtHomeCity;
    private javax.swing.JTextField txtHomePhone;
    private javax.swing.JTextField txtHomeState;
    private javax.swing.JTextField txtHomeZip;
    private javax.swing.JTextField txtLastName;
    private javax.swing.JTextField txtMailingAddr1;
    private javax.swing.JTextField txtMailingAddr2;
    private javax.swing.JTextField txtMailingCity;
    private javax.swing.JTextField txtMailingPhone;
    private javax.swing.JTextField txtMailingState;
    private javax.swing.JTextField txtMailingZip;
    private javax.swing.JTextField txtMemberDOB;
    private javax.swing.JTextField txtMemberEmail;
    private javax.swing.JTextField txtMemberEmployer;
    private javax.swing.JTextField txtMemberFirstName;
    private javax.swing.JTextField txtMemberGoesBy;
    private javax.swing.JTextField txtMemberHomePhone;
    private javax.swing.JTextField txtMemberID;
    private javax.swing.JTextField txtMemberInterest;
    private javax.swing.JTextField txtMemberInterest1;
    private javax.swing.JTextField txtMemberInterest2;
    private javax.swing.JTextField txtMemberLastName;
    private javax.swing.JTextField txtMemberMinistry1;
    private javax.swing.JTextField txtMemberMinistry2;
    private javax.swing.JTextField txtMemberMinistry3;
    private javax.swing.JTextField txtMemberOccupation;
    private javax.swing.JTextField txtMemberOtherEmail;
    private javax.swing.JTextField txtMemberWorkPhone;
    private javax.swing.JTextField txtOtherAddr1;
    private javax.swing.JTextField txtOtherAddr2;
    private javax.swing.JTextField txtOtherCity;
    private javax.swing.JTextField txtOtherPhone;
    private javax.swing.JTextField txtOtherState;
    private javax.swing.JTextField txtSalutation;
    // End of variables declaration//GEN-END:variables

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;
}
